Skip to main content

Zigzag Conversion

The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)

P A H N A P L S I I G Y I R

And then read line by line: "PAHNAPLSIIGYIR"

Write the code that will take a string and make this conversion given a number of rows:

string convert(string s, int numRows);

function convert(s, numRows) {
if (numRows === 1) {
return s;
}

const rows = new Array(numRows).fill('');
let currentRow = 0;
let direction = 1;

for (let i = 0; i < s.length; i++) {
rows[currentRow] += s[i];
if (currentRow === 0) direction = 1;
if (currentRow === numRows - 1) direction = -1;
currentRow += direction;
}

return rows.join('');
}